using ModernUO.Serialization;
using Server.Items;

namespace Server.Mobiles
{
    [SerializationGenerator(0, false)]
    public partial class Coil : SilverSerpent
    {
        [Constructible]
        public Coil()
        {
            IsParagon = true;

            Hue = 0x3F;

            SetStr(205, 343);
            SetDex(202, 283);
            SetInt(88, 142);

            SetHits(628, 1291);

            SetDamage(19, 28);

            SetDamageType(ResistanceType.Physical, 50);
            SetDamageType(ResistanceType.Poison, 50);

            SetResistance(ResistanceType.Physical, 56, 62);
            SetResistance(ResistanceType.Fire, 25, 30);
            SetResistance(ResistanceType.Cold, 25, 30);
            SetResistance(ResistanceType.Poison, 100);
            SetResistance(ResistanceType.Energy, 25, 30);

            SetSkill(SkillName.Wrestling, 124.5, 141.3);
            SetSkill(SkillName.Tactics, 130.2, 142.0);
            SetSkill(SkillName.MagicResist, 102.3, 113.0);
            SetSkill(SkillName.Anatomy, 120.8, 138.1);
            SetSkill(SkillName.Poisoning, 110.1, 133.4);

            // TODO: Fame/Karma

            PackGem(2);
            PackItem(new Bone());
        }

        public override string CorpseName => "a Coil corpse";
        // TODO: Check faction allegiance

        public override string DefaultName => "Coil";

        public override Poison HitPoison => Poison.Lethal;
        public override Poison PoisonImmune => Poison.Lethal;
        public override bool GivesMLMinorArtifact => true;
        public override int Hides => 48;
        public override int Meat => 1;

        public override void GenerateLoot()
        {
            AddLoot(LootPack.UltraRich, 3);
        }

        public override WeaponAbility GetWeaponAbility() => WeaponAbility.MortalStrike;

        public override void OnDeath(Container c)
        {
            base.OnDeath(c);

            c.DropItem(new CoilsFang());

            /*
            // TODO: uncomment once added
            if (Utility.RandomDouble() < 0.025)
            {
              switch ( Utility.Random( 5 ) )
              {
                case 0: c.DropItem( new AssassinChest() ); break;
                case 1: c.DropItem( new DeathGloves() ); break;
                case 2: c.DropItem( new LeafweaveLegs() ); break;
                case 3: c.DropItem( new HunterLegs() ); break;
                case 4: c.DropItem( new MyrmidonLegs() ); break;
              }
            }
            */
        }
    }
}
